package fr.enssat.embeddedsoft.projet.fgourvel.spotrin.bluetooth;

import java.io.IOException;

import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.util.Log;

/********************************************************************
 * ConnectThread --> Thread Client :
 *                   connexion à un serveur distant
 *********************************************************************/

public class ConnectThread extends Thread {

        private static String TAG = "ConnectThread";
        private BluetoothService service;
        private BluetoothSocket socket;
        private BluetoothDevice device;
        
        /*********************************************************
        /*                       CONSTRUCTEUR
         *********************************************************/
        
        
		public ConnectThread(BluetoothService service, BluetoothDevice device){
		        this.service = service;
		        this.device = device;
		       
		        try {   //création de la socket
		                socket = device.createRfcommSocketToServiceRecord(BluetoothService.APP_UUID);
		        } catch (IOException e) {
		                Log.e(TAG,"Bluetooth : echec creation socket",e);
		        }
		}
        
        /*********************************************************
        /*                       TRAITEMENT
         *********************************************************/
		
		public void run(){
		        service.getAdapter().cancelDiscovery();
		        // On connecte la socket
		        try {
		                socket.connect();
		        } catch (IOException e) {
		                // On ferme la socket
		                try {
		                        socket.close();
		                } catch (IOException e1) {
		                        Log.e(TAG,"Bluetooth : la fermeture de la socket a échoué",e);
		                }
		                // La connexion à échouée
		                service.connectionFailed();
		        }
		        // On connecte le périphérique à la socket
		        service.connected(socket, device);
		}
        
        /*********************************************************
        /*                       ARRET DU THREAD
         *********************************************************/
		
        public void cancel(){
                // On ferme la socket
                try {
                        socket.close();
                } catch (IOException e) {
                        Log.e(TAG,"Bluetooth : la fermeture de la socket a échoué",e);
                }
        }
        
}
